import { http } from '@/utils/http'

/**
 * 单体接口
 *
 */
// export type UserResult = {
//   msg: string;
//   code: number;
//   user?: {
//     userName: string;
//     avatar: string;
//   };
//   roles?: [];
//   permissions?: [];
// };

// export type LoginResult = {
//   code: number;
//   msg: string;
//   token?: string;
// };

// export type RefreshTokenResult = {
//   success: boolean;
//   data: {
//     /** `token` */
//     accessToken: string;
//     /** 用于调用刷新`accessToken`的接口时所需的`token` */
//     refreshToken: string;
//     /** `accessToken`的过期时间（格式'xxxx/xx/xx xx:xx:xx'） */
//     expires: Date;
//   };
// };

// export type codeImgResult = {
//   code: number;
//   data: {
//     captchaEnabled: boolean;
//     img: string;
//     uuid: string;
//   };
//   msg: string;
// };

// /** 登录 */
// export const getLogin = (data?: object) => {
//   return http.request<LoginResult>("post", "/login", { data });
// };

// /** 获取用户详细信息 */
// export const getInfo = () => {
//   return http.request<UserResult>("get", "/getInfo");
// };

// /** 获取验证码 */
// export const getCodeImg = () => {
//   return http.request<codeImgResult>("get", "/captchaImage");
// };

/**
 * 微服务接口
 *
 */

export type UserResult = {
  user: {
    userName: string
    avatar: string
    nickName: string
    userId: string
  }
  roles: []
  permissions: []
}

export type LoginResult = {
  /** `token` */
  access_token?: string
  expires_in: Number
}

export type RefreshTokenResult = {
  /** `token` */
  accessToken: string
  /** 用于调用刷新`accessToken`的接口时所需的`token` */
  refreshToken: string
  /** `accessToken`的过期时间（格式'xxxx/xx/xx xx:xx:xx'） */
  expires: Date
}

export type codeImgResult = {
  captchaEnabled: boolean
  img: string
  uuid: string
}

/** 登录 */
export const getLogin = (data?: object) => {
  return http.request<HttpResponse<LoginResult>>('post', '/auth/login', { data })
}

/** 获取用户详细信息 */
export const getInfo = () => {
  return http.request<HttpResponse<UserResult>>('get', '/system/user/getInfo')
}

/** 获取验证码 */
export const getCodeImg = () => {
  return http.request<HttpResponse<codeImgResult>>('get', '/code')
}
